package com.jhxy.algorithm.minstack;

/**
 * Date: 2024/3/10 11:49
 * Author: T_log
 * Description: 最小栈_链表法
 */
public class LinkedNodeSolution {

    class LinkedNode {
        //当前node的值
        int value;
        //下一个节点
        LinkedNode nextNode;
        //最小值节点
        LinkedNode minNode;

        public LinkedNode(int value, LinkedNode topNode) {
            this.value = value;
            nextNode = topNode;

            if (topNode == null || value < topNode.minNode.value) {
                minNode = this;
            } else {
                minNode = topNode.minNode;
            }
        }
    }

    LinkedNode topNode;

    public LinkedNodeSolution() {
        topNode = null;
    }

    public void push(int val) {
        LinkedNode node;
        if (topNode == null) {
            node = new LinkedNode(val,null);
        } else {
            node  = new LinkedNode(val,topNode);
        }
        topNode  = node;
    }

    public void pop() {
        topNode = topNode.nextNode;
    }

    public int top() {
       return topNode.value;
    }

    public int getMin() {
        return topNode.minNode.value;
    }


}
